﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;



namespace paroecia
{
    public class WynikZapytania {
        public int kolumny;
        public int wersy;
        List<string> L = new List<string>();

        internal WynikZapytania(OleDbDataReader r) {
            kolumny = r.FieldCount;
            wersy = 0;
            for (int i = 0; i < kolumny; i++) L.Add(r.GetName(i));
            while (r.Read()) {
                for (int i = 0; i < kolumny; i++) L.Add(r.GetValue(i).ToString());
                wersy++;
            } 
        }

        public string GetInfo(int x, int y){
        return L[x*kolumny+y];
        }
        
    }

    class BazaDaych{
        public static OleDbConnection con;
        


        public static void Inicjalizacja() {
            Inicjalizacja("baza.mdb");
        
        }

        public static void Inicjalizacja(string nazwapliku)
        {
            try
            {
                con = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;" + "data source="+nazwapliku);  
                con.Open();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                con.Close();  
            }

        }

        public static WynikZapytania WykonajZWynikiem(string kwerenda){
            OleDbDataReader wyn = null;
            WynikZapytania w = null;
            try
            {
                
                con.Open();
                OleDbCommand cmd = new OleDbCommand(kwerenda, con);
                wyn = cmd.ExecuteReader();
                w = new WynikZapytania(wyn);
                con.Close();

            }
            catch (Exception ex) { throw ex; }
            return w;
        }

        public static void Wykonaj(string kwerenda)
        {
            

            try
            {

                con.Open();
                OleDbCommand cmd = new OleDbCommand(kwerenda, con);
                cmd.ExecuteNonQuery();
                con.Close();

            }
            catch (Exception ex) { throw ex; }

        }


    }

   

    class Program
    {
        static void Main(string[] args)
        {
      
            try
            {
                BazaDaych.Inicjalizacja();
                WynikZapytania r = BazaDaych.WykonajZWynikiem("SELECT e.imię & ' ' & e.nazwisko AS Pierwszy_Świadek, f.imię & ' ' & f.nazwisko AS Drugi_Świadek, 'ks. ' & c.imię & ' ' & c.nazwisko AS Ksiądz FROM chrzty a, ludzie b, ksieza c, ludzie d, ludzie e, ludzie f;");
                int i=r.wersy+1;
                Console.WriteLine(r.wersy );
                while (i-->0) {
                    Console.WriteLine(r.GetInfo(i,0)+ " " + r.GetInfo(i,1)+" "+r.GetInfo(0,1)+" "+i);}
                /*Console.WriteLine("w");
                r = BazaDaych.WykonajZWynikiem("select * from ludzie AS a, parafie AS b;");
                Console.WriteLine("d");
                i = r.wersy;
                while (i-- > 0)
                {
                    Console.WriteLine(r.GetInfo(i, 0) + " " + r.GetInfo(i, 1) + " " + r.GetInfo(0, 0));
                }*/
            }
            catch (Exception ex) { Console.WriteLine(ex); }
            Console.ReadKey();
        }
    }
}
